﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Runtime.Serialization.Formatters;
using FindPackage.DTO;
using System.Xml.Serialization;
using System.IO;
using System.Xml;
namespace FindPackage.DAL
{
    public class Usuario_DAL
    {
        #region Variaveis
        private MySqlParameter[] paramMysqlArray;
        private Retorno_DTO oRetorno_DTO = null;
        private Usuario_DTO oRetUsuario_DTO = null;        
        #endregion
        public Usuario_DTO GravaUsuario(Usuario_DTO usuario)
        {
            paramMysqlArray = new MySqlParameter[6];
            paramMysqlArray[0] = new MySqlParameter("ILOGIN", MySqlDbType.VarChar, 100);
            paramMysqlArray[0].Direction = System.Data.ParameterDirection.Input;
            paramMysqlArray[0].Value = usuario.pEmail;

            paramMysqlArray[1] = new MySqlParameter("IPWD", MySqlDbType.VarChar, 50);
            paramMysqlArray[1].Direction = System.Data.ParameterDirection.Input;
            paramMysqlArray[1].Value = usuario.pSenha;

            paramMysqlArray[2] = new MySqlParameter("ITIPO_USUARIO", MySqlDbType.Int32);
            paramMysqlArray[2].Direction = System.Data.ParameterDirection.Input;
            paramMysqlArray[2].Value = usuario.pTipoUsuario;

            paramMysqlArray[3] = new MySqlParameter("COD_RETORNO", MySqlDbType.Int32);
            paramMysqlArray[3].Direction = System.Data.ParameterDirection.Output;

            paramMysqlArray[4] = new MySqlParameter("DSC_RETORNO", MySqlDbType.VarChar, 100);
            paramMysqlArray[4].Direction = System.Data.ParameterDirection.Output;

            paramMysqlArray[5] = new MySqlParameter("XML_RETORNO", MySqlDbType.LongText);
            paramMysqlArray[5].Direction = System.Data.ParameterDirection.Output;

            try
            {
                IDBConnection conn = new DBConnection();
                oRetorno_DTO = conn.Executar("prc_cadastro_usuario_rapido", paramMysqlArray,
                                     System.Data.CommandType.StoredProcedure);

                XmlSerializer ChaveUsuarioXml = new XmlSerializer(typeof(Usuario_DTO));
                oRetUsuario_DTO = (Usuario_DTO)ChaveUsuarioXml.Deserialize(new StringReader(oRetorno_DTO.pXML_RETORNO));

                return oRetUsuario_DTO;

            }
            catch (Exception ex)
            {
                return null;
                throw ex;
            }


        }
        public Usuario_DTO LoginUsuario(Usuario_DTO usuario)
        {

            paramMysqlArray = new MySqlParameter[5];
            paramMysqlArray[0] = new MySqlParameter("ILOGIN", MySqlDbType.VarChar, 100);
            paramMysqlArray[0].Direction = System.Data.ParameterDirection.Input;
            paramMysqlArray[0].Value = usuario.pEmail;

            paramMysqlArray[1] = new MySqlParameter("IPWD", MySqlDbType.VarChar, 50);
            paramMysqlArray[1].Direction = System.Data.ParameterDirection.Input;
            paramMysqlArray[1].Value = usuario.pSenha;

            paramMysqlArray[2] = new MySqlParameter("COD_RETORNO", MySqlDbType.Int32);
            paramMysqlArray[2].Direction = System.Data.ParameterDirection.Output;

            paramMysqlArray[3] = new MySqlParameter("DSC_RETORNO", MySqlDbType.VarChar, 100);
            paramMysqlArray[3].Direction = System.Data.ParameterDirection.Output;

            paramMysqlArray[4] = new MySqlParameter("XML_RETORNO", MySqlDbType.LongText);
            paramMysqlArray[4].Direction = System.Data.ParameterDirection.Output;

            try
            {
                IDBConnection conn = new DBConnection();
                oRetorno_DTO = conn.Executar("prc_login", paramMysqlArray,
                                     System.Data.CommandType.StoredProcedure);

                if (oRetorno_DTO.pCOD_RETORNO != 99)
                {
                    XmlSerializer UsuarioXml = new XmlSerializer(typeof(Usuario_DTO));
                    oRetUsuario_DTO = (Usuario_DTO)UsuarioXml.Deserialize(new StringReader(oRetorno_DTO.pXML_RETORNO));
                    return oRetUsuario_DTO;
                }
                return null;

            }
            catch (Exception ex)
            {
                return null;
                throw ex;
            }



        }
    }
}
